package HRMPROJECT.MODELS;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TimeKeepingModels {
    private Connection m_objConnection = null;
    private CallableStatement m_objST = null;
    private ResultSet m_objRS = null;

    public TimeKeepingModels(Connection obj_Connection) {
        // Khởi tạo các đối tượng
        m_objConnection = obj_Connection;
    }

    /* Hiển thị toàn bộ thông tin sinh viên từ hệ thống */
    public ResultSet getElementsById(int DepartId, String DayOf) throws SQLException {
        try {
            // 1. Kiểm tra trạng thái kết nốibj
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_TIMEKEEP_BY_DEPART(?,?)}");

                m_objST.setInt("DepartId", DepartId);
                m_objST.setString("DayOf", DayOf);

                // 2. Thực thi truy vấn
                m_objRS = m_objST.executeQuery();
            }
        } catch (SQLException ex) {
            throw ex;
        }
        return m_objRS;
    }

    /* Nghiệp vụ thêm sinh viên vào danh sách */
    public boolean InsertElement(TimeKeepingEntity objEntity) throws SQLException {
        try {
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_INSERT_TIMEKEEP(?,?,?,?,?)}");
                // 2. Thiết lập tham số cho Store Procedure
                m_objST.setInt("DepartId", objEntity.getDepartId());
                m_objST.setInt("EmpId", objEntity.getEmpId());
                m_objST.setFloat("TimeKeep", objEntity.getTimeKeep());
                m_objST.setDate("DayOf", objEntity.getDayOf());
                m_objST.setBoolean("Status", objEntity.isStatus());

                // 3. Thực thi truy vấn
                m_objST.execute();
            }
        } catch (SQLException e) {
            throw e;
        }
        return true;
    }

    // Nghiệp vụ cập nhật thông tinh sinh viên
    public boolean UpdateElement(TimeKeepingEntity objEntity) throws SQLException {
        try {
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_UPDATE_TIMEKEEP(?,?,?,?,?,?)}");

                m_objST.setInt("Id", objEntity.getId());
                m_objST.setInt("DepartId", objEntity.getDepartId());
                m_objST.setInt("EmpId", objEntity.getEmpId());
                m_objST.setFloat("TimeKeep", objEntity.getTimeKeep());
                m_objST.setDate("DayOf", objEntity.getDayOf());
                m_objST.setBoolean("Status", objEntity.isStatus());

                // 3. Thực thi truy vấn
                m_objST.execute();
            }
        } catch (SQLException ex) {
            throw ex;
        }
        return true;
    }

    // Nghiệp vụ xóa thông tin sinh viên
    public boolean DeleteElement(TimeKeepingEntity objEntity) throws SQLException {
        try {
            if (!m_objConnection.isClosed()) {
                m_objST = m_objConnection.prepareCall("{call Y2016JC29P_DELETE_TIMEKEEP(?)}");

                m_objST.setInt("Id", objEntity.getId());
                m_objST.execute();
            }
        } catch (SQLException e) {
            throw e;
        }
        return true;
    }
}
